#pragma once

#include <algorithm/analytical_model/io/json/transform/Tags.h>

#include <boost/json.hpp>

#include <vector>

namespace solar::io::json
{
    /// \brief 将整个压缩表示的JSON还原为各个数据结构对应的JSON表示
    /// \note 定日镜和接收器的编号在JSON中没有，这里按照数组下标编号
    /// \note 参数中的vector会被清空后再处理
    void transformJSON(const DeCompressTag&, const boost::json::value& input_json,
                       boost::json::value& common_para_value,
                       boost::json::value& rectangle_grid_value,
                       boost::json::value& scene_para_value,
                       boost::json::value& simulation_para_value,
                       boost::json::value& sun_value,
                       std::vector<boost::json::value>& heliostat_values,
                       std::vector<boost::json::value>& receiver_values,
                       std::vector<boost::json::value>& heliostat_para_values);
}
